using SupplierCustomerManagement.Domain.Enums;

namespace SupplierCustomerManagement.Read.API.Applications.Commands.bankaccounts
{
    /// <summary>
    /// 银行账户列表数据传输对象
    /// </summary>
    public class BankAccountListDto
    {
        /// <summary>
        /// 银行账户ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 关联实体ID（客户ID或供应商ID）
        /// </summary>
        public int RelatedEntityId { get; set; }

        /// <summary>
        /// 关联实体类型（Customer/Supplier）
        /// </summary>
        public EntityType RelatedEntityType { get; set; }

        /// <summary>
        /// 关联实体类型描述
        /// </summary>
        public string RelatedEntityTypeDescription { get; set; } = string.Empty;

        /// <summary>
        /// 银行名称
        /// </summary>
        public string BankName { get; set; } = string.Empty;

        /// <summary>
        /// 账户名称
        /// </summary>
        public string AccountName { get; set; } = string.Empty;

        /// <summary>
        /// 开户行
        /// </summary>
        public string OpeningBank { get; set; } = string.Empty;

        /// <summary>
        /// 账户号码
        /// </summary>
        public string AccountNumber { get; set; } = string.Empty;

        /// <summary>
        /// 账户类型（银行卡/存折）
        /// </summary>
        public AccountType AccountType { get; set; }

        /// <summary>
        /// 账户类型描述
        /// </summary>
        public string AccountTypeDescription { get; set; } = string.Empty;

        /// <summary>
        /// 账户属性（公司/个人）
        /// </summary>
        public AccountProperty AccountProperty { get; set; }

        /// <summary>
        /// 账户属性描述
        /// </summary>
        public string AccountPropertyDescription { get; set; } = string.Empty;

        /// <summary>
        /// 账户关系类型
        /// </summary>
        public AccountRelationshipType? AccountRelationshipType { get; set; }

        /// <summary>
        /// 账户关系类型描述
        /// </summary>
        public string? AccountRelationshipTypeDescription { get; set; }

        /// <summary>
        /// 手机号码
        /// </summary>
        public string? MobileNumber { get; set; }

        /// <summary>
        /// 身份证号
        /// </summary>
        public string? IdNumber { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        public int CreatedBy { get; set; }

        /// <summary>
        /// 最后修改时间
        /// </summary>
        public DateTime? UpdatedTime { get; set; }

        /// <summary>
        /// 修改人
        /// </summary>
        public int? UpdatedBy { get; set; }
    }
}